﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using log4net;

namespace GenerateDB
{
    class DatabaseConnection
    {
        private static readonly ILog _log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        private DataBaseInfo _dbInfo;
        private SqlConnection _connection;

        public DatabaseConnection(DataBaseInfo dbInfo)
        {
            this.Init(dbInfo);
        }

        private void Init(DataBaseInfo dbInfo)
        {
            _dbInfo = dbInfo;
        }

        public SqlConnection OpenConnection()
        {
            try
            {
                string connectionString = String.Format(@"Data Source={0};User ID={1};Password={2}", _dbInfo.Server, _dbInfo.Username, _dbInfo.Password);
                _connection = new SqlConnection(connectionString);
                _connection.Open();
                return _connection;
            }
            catch (SqlException ex)
            {
                _log.Error("Ошибка подключения к базе данных", ex);
                throw new Exception("Ошибка подключения к базе данных. подробнее: " + ex.Message);
            }
        }

        public void CloseConnection()
        {
            try
            {
                _connection.Close();
            }
            catch (SqlException ex)
            {
                _log.Error("Ошибка закрытия соединения с базой данных", ex);
                throw new Exception("Ошибка закрытия соединения с базой данных. подробнее: " + ex.Message);
            }
        }
    }
}
